Cookie Jar - CS50x 2023
出自:《芝麻街》
假设你想实现一个饼干罐 ([cookie jar]) 来存储饼干。在一个名为 jar.py
的文件中,实现一个名为 Jar
的 class
,包含以下方法:
__init__
应该使用给定的capacity
初始化一个 cookie jar,capacity
代表饼干罐的最大容量(可容纳的饼干数量)。但是,如果capacity
不是一个非负int
,__init__
应该引发一个ValueError
(通过raise ValueError
)。__str__
应该返回一个str
,其中包含
,其中 是 cookie jar 中的饼干数量。例如,如果 cookie jar 中有 3 个饼干,那么str
应该返回""
deposit
应该向 cookie jar 中添加n
个饼干。但是,如果添加这么多饼干会超过 cookie jar 的容量,deposit
应该引发一个ValueError
。withdraw
应该从 cookie jar 中移除n
个饼干。但是,如果 cookie jar 中没有那么多饼干,withdraw
应该引发一个ValueError
。capacity
应该返回 cookie jar 的容量。size
应该返回 cookie jar 中实际的饼干数量。
请按照以下结构定义你的 class
。 你不能更改这些方法的参数,但你可以添加你自己的方法。
class Jar:
def __init__(self, capacity=12):
...
def __str__(self):
...
def deposit(self, n):
...
def withdraw(self, n):
...
@property
def capacity(self):
...
@property
def size(self):
...
演示
你可以选择实现一个 main
函数来测试你的类,但这不是必须的。因此,我们只能演示这些内容!
出自:《芝麻街》
开始之前
- 使用你的 GitHub 帐户登录 cs50.dev。
- 单击终端窗口内部并执行
cd
。 - 执行
wget https://cdn.cs50.net/2022/fall/labs/6/jar.zip
,然后按 Enter 键,以便在你的 codespace 中下载一个名为jar.zip
的 zip 文件。 请务必注意wget
命令与 URL 之间的空格,以及URL本身是否正确! - 然后执行
unzip jar.zip
命令,解压得到名为jar
的文件夹。 - 删除 ZIP 文件:执行
rm jar.zip
命令,并在提示符下输入y
确认删除。
如何测试
以下是如何手动测试你的代码:
- 在你的
jar.py
文件中定义一个main
函数,在其中创建一个新的Jar
实例,如jar = Jar()
。 通过执行print(str(jar.capacity))
语句,检查jar
实例的容量是否正确。 请确保在jar.py
文件的末尾调用main()
函数。 - 通过调用
print(str(jar))
测试你的__str__
函数是否按预期工作。 - 尝试调用
jar.deposit(2)
方法,向饼干罐中放入两个饼干。 此时,再次执行print(str(jar))
语句,应该会显示你放入的饼干数量。 - 尝试调用
jar.withdraw(1)
方法,从饼干罐中取出一个饼干。 现在调用print(str(jar))
应该显示比你之前拥有的饼干少一个。 - 测试能否取出超过饼干罐现有数量的饼干,以及能否放入超过饼干罐容量的饼干。
这个没有 check50
!
如何提交
无需提交! 这是一个练习题。